package com.example.ymm.schedu;

import com.example.ymm.modules1.service.dkn.DknOrderService;
import com.example.ymm.modules1.service.hl.DknPurchaseOrderService;
import com.example.ymm.modules1.service.hl.YwMoneyAffirmLogService;
import com.example.ymm.modules1.service.hl.ex.ExPublishPaperService;
import com.example.ymm.modules1.service.ms.MsMouldMainService;
import com.example.ymm.modules1.service.sys.DdEventLogService;
import com.example.ymm.modules1.service.user.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
@Slf4j
public class ScheduledTask {

    @Autowired
    DbDeptService dbDeptService;

    @Autowired
    DbChatGroupService dbChatGroupService;

    @Autowired
    DbUserService dbUserService;
    @Autowired
    DbOrderService dbOrderService;

    @Autowired
    MsMouldMainService msMouldMainService;

    @Autowired
    DbChatGroupDeptService dbChatGroupDeptService;

    @Autowired
    DdEventLogService ddEventLogService;

    @Autowired
    DknPurchaseOrderService dknPurchaseOrderService;

    @Autowired
    YwMoneyAffirmLogService ywMoneyAffirmLogService;
    @Autowired
    DknOrderService dknOrderService;
    @Autowired
    ExPublishPaperService exPublishPaperService;

    @Autowired
    OfficeChangeLogService officeChangeLogService;

    @Value("${spring.profiles.active}")
    String PD_MATCH;

    /**
     * 同步人员账号信息
     * 每周一0:0:0执行
     */

    @Scheduled(cron = "0 0 0 ? * MON")
    private void syncDeptUser() {
        try {
            if ("prod-new".equals(PD_MATCH)) {
                System.out.println("---开始执行账号同步::");
                dbDeptService.syncUpLoad();
            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
    }

    /**
     * 新员工自动入群
     * 每周一4:0:0执行
     */

    @Scheduled(cron = "0 0 0 ? * MON")
    private void syncNoGroupUserDept() {
        try {
            if ("prod-new".equals(PD_MATCH)) {
                System.out.println("---开始执行 新员工自动入群::");
                dbChatGroupDeptService.syncNoGroupUserDept();
            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
    }

    /**
     * 每天8点30执行 机器人发送 打卡统计
     */
    @Scheduled(cron = "0 30 8 * * ?")
    private void sendGroup() {

        try {
            if ("prod-new".equals(PD_MATCH)) {
                dbChatGroupService.sendGroupListMessage();
            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
    }

    /**
     * 每周一0:0:0 执行一次
     * 同步离职人员信息
     */

    @Scheduled(cron = "0 0 0 ? * MON")
    private void sycnDimissionUserList() {
        try {
            dbUserService.sycnDimissionUserList();
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
    }

    /**
     * 每天8点30执行 模具费用提醒
     */
    @Scheduled(cron = "0 30 8 * * ?")
    private void sendMouldMain() {

        try {
            msMouldMainService.syncNoticeAllMain();
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
    }

    /**
     * 锁定兑换 订单
     */
    @Scheduled(cron = "0 0 */3 * * ?") // 每3小时执行一次，0分钟，0分钟，0秒
    private void syncLockOrders() {

        try {
            dbOrderService.syncLockOrders();
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
    }


    /**
     * 查询 迪卡侬 采购下单状态
     */
    @Scheduled(cron = "0 0 */2 * * ?") // ，0分钟，0分钟，0秒
    private void queryDknOrders() {
        //每3分钟  0 */5 * * * ?
        //每1小时  0 0 */1 * * ?
        try {
            dknPurchaseOrderService.queryDknOrders();
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
    }

    /**
     * 自动更新订单状态
     */
    @Scheduled(cron = "0 0 */2 * * ?") // ，0分钟，0分钟，0秒
    private void orderStatusDknOrders() {
        //每3分钟  0 */5 * * * ?
        //每1小时  0 0 */1 * * ?
        try {
            dknPurchaseOrderService.orderStatusDknOrders();
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
    }

    /**
     * 迪卡侬 自动下单
     *
     */
    @Scheduled(cron = "0 0 */2 * * ?") // ，0分钟，0分钟，0秒
    private void dknAotoCreate() {
        //每3分钟  0 */10 * * * ?
        //每1小时  0 0 */1 * * ?
        try {
            if ("prod-new".equals(PD_MATCH)) {
                dknOrderService.createComponentOrderLianShenFn(null);
                dknOrderService.createComponentOrderHuaFaFn(null);
            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
    }

    /**
     * 每天8点30执行 部门新增或修改事件
     */
    @Scheduled(cron = "0 30 8 * * ?")
    private void operatorDingdingDeptEvent() {

        try {
            if ("prod-new".equals(PD_MATCH)) {
                ddEventLogService.operatorAllDingdingEventLog("org_dept_create");

                ddEventLogService.operatorAllDingdingEventLog("org_dept_modify");

                ddEventLogService.operatorAllDingdingEventLog("org_dept_remove");
            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
    }

    /**
     * 每天9点30执行 部门新增或修改事件
     */
    @Scheduled(cron = "0 30 9 * * ?")
    private void operatorDingdingUserEvent() {

        try {
            if ("prod-new".equals(PD_MATCH)) {
                ddEventLogService.operatorAllDingdingEventLog("user_add_org");
                ddEventLogService.operatorAllDingdingEventLog("user_modify_org");
                ddEventLogService.operatorAllDingdingEventLog("user_leave_org");

            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
    }

    /**
     * 每天10点30执行 执行钉钉其他事件
     */
    @Scheduled(cron = "0 30 10 * * ?")
    private void operatorDingdingOtherEvent() {

        try {
            if ("prod-new".equals(PD_MATCH)) {
                ddEventLogService.operatorAllDingdingEventLog("");

            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
    }



    /**
     * 每天9点执行 一次 0704接单人 张鑫 改成 曾丽娜 的数据串改
     */
    @Scheduled(cron = "0 0 9 * * ?") // ，0分钟，0分钟，0秒
    private void syncYwChage() {
        try {
//            if ("prod-new".equals(PD_MATCH)) {
//            }
            ywMoneyAffirmLogService.executeSelectChange1();

        }catch (Exception e) {
            log.error(e.getMessage(), e);
        }

    }


    // 考试系统 每5秒执行一次
    @Scheduled(cron = "0/5 * * * * ?")
    public void exScheduledSeconds() {
        // 这里编写需要定时执行的任务逻辑
//        System.out.println("定时任务每20秒执行一次：" + System.currentTimeMillis());
        exPublishPaperService.exScheduledSeconds();
    }

    /**
     * 每天11执行 调岗审批记录
     */
    @Scheduled(cron = "0 0 23 * * ?")
    private void officeUserChangeAdd() {

        try {
            if ("prod-new".equals(PD_MATCH)) {
                officeChangeLogService.scheduledAdd();
            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
    }

}
